JSON Data Filtering এবং Transformation হল JSON ডেটার মধ্যে নির্দিষ্ট ডেটা নির্বাচন বা পরিবর্তন করার প্রক্রিয়া। এই দুটি প্রক্রিয়া বিশেষভাবে গুরুত্বপূর্ণ যখন আপনি ডেটা এক্সচেঞ্জের সময়ে নির্দিষ্ট তথ্য নির্বাচন করতে চান বা একটি JSON ডেটার স্ট্রাকচার পরিবর্তন করতে চান। Java তে JSON ডেটা ফিল্টার এবং ট্রান্সফর্ম করার জন্য বিভিন্ন লাইব্রেরি ব্যবহার করা যেতে পারে, যেমন Jackson বা Gson।
JSON Data Filtering
JSON ডেটা ফিল্টারিং মানে হল JSON ডেটার মধ্যে থেকে নির্দিষ্ট ফিল্ড বা ভ্যালু বের করা। উদাহরণস্বরূপ, যদি আপনার কাছে একটি বড় JSON ডেটা থাকে, তবে আপনি সেই ডেটার মধ্যে থেকে কিছু নির্দিষ্ট ফিল্ড বা আইটেম নির্বাচন করতে পারেন।
উদাহরণ:
ধরা যাক, আমাদের একটি JSON ডেটা আছে এবং আমরা JSON ডেটা থেকে শুধুমাত্র "name" এবং "city" ফিল্ডগুলো ফিল্টার করতে চাই।
JSON ডেটা:
{
"name": "John",
"age": 30,
"city": "New York",
"email": "john.doe@example.com"
}
Jackson লাইব্রেরি দিয়ে JSON ফিল্টারিং:
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonFilteringExample {
public static void main(String[] args) {
try {
// JSON স্ট্রিং
String jsonData = "{\"name\": \"John\", \"age\": 30, \"city\": \"New York\", \"email\": \"john.doe@example.com\"}";
// ObjectMapper ইনস্ট্যান্স তৈরি
ObjectMapper objectMapper = new ObjectMapper();
// JSON স্ট্রিং থেকে JsonNode অবজেক্টে কনভার্ট
JsonNode rootNode = objectMapper.readTree(jsonData);
// নির্দিষ্ট ফিল্ড নির্বাচন করা
String name = rootNode.path("name").asText();
String city = rootNode.path("city").asText();
// ফিল্টার করা ডেটা প্রিন্ট করা
System.out.println("Name: " + name);
System.out.println("City: " + city);
} catch (Exception e) {
e.printStackTrace();
}
}
}
আউটপুট:
Name: John
City: New York
এখানে, ObjectMapper ব্যবহার করে JSON ডেটা পার্স করা হয়েছে এবং JsonNode অবজেক্টের মাধ্যমে নির্দিষ্ট ফিল্ডগুলো (name এবং city) ফিল্টার করা হয়েছে।
JSON Data Transformation
JSON Data Transformation হল JSON ডেটার কাঠামো বা স্ট্রাকচার পরিবর্তন করার প্রক্রিয়া। উদাহরণস্বরূপ, আপনি JSON অবজেক্টে থাকা একটি ফিল্ডের মান পরিবর্তন করতে পারেন অথবা JSON স্ট্রাকচারকে সম্পূর্ণভাবে নতুন কাঠামোতে রূপান্তর করতে পারেন।
উদাহরণ:
ধরা যাক, আমাদের একটি JSON ডেটা আছে এবং আমরা "city" ফিল্ডের মান পরিবর্তন করতে চাই এবং একটি নতুন ফিল্ড "isStudent" যোগ করতে চাই।
JSON ডেটা:
{
"name": "John",
"age": 30,
"city": "New York"
}
Jackson লাইব্রেরি দিয়ে JSON ট্রান্সফরমেশন:
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
public class JsonTransformationExample {
public static void main(String[] args) {
try {
// JSON স্ট্রিং
String jsonData = "{\"name\": \"John\", \"age\": 30, \"city\": \"New York\"}";
// ObjectMapper ইনস্ট্যান্স তৈরি
ObjectMapper objectMapper = new ObjectMapper();
// JSON স্ট্রিং থেকে JsonNode অবজেক্টে কনভার্ট
JsonNode rootNode = objectMapper.readTree(jsonData);
// ObjectNode ব্যবহার করে JSON স্ট্রাকচার ট্রান্সফর্ম করা
ObjectNode updatedNode = (ObjectNode) rootNode;
updatedNode.put("city", "Los Angeles"); // city এর মান পরিবর্তন করা
updatedNode.put("isStudent", false); // নতুন ফিল্ড যোগ করা
// নতুন ট্রান্সফর্মড JSON প্রিন্ট করা
String transformedJson = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(updatedNode);
System.out.println(transformedJson);
} catch (Exception e) {
e.printStackTrace();
}
}
}
আউটপুট:
{
"name": "John",
"age": 30,
"city": "Los Angeles",
"isStudent": false
}
এখানে, আমরা ObjectNode ব্যবহার করে JSON স্ট্রাকচারে পরিবর্তন আনা হয়েছে। city ফিল্ডের মান পরিবর্তন করা হয়েছে এবং isStudent নামে নতুন একটি ফিল্ড যোগ করা হয়েছে।
JSON ফিল্টারিং এবং ট্রান্সফরমেশন: সাপোর্টেড লাইব্রেরি
Jackson এবং Gson হল জনপ্রিয় লাইব্রেরি যেগুলি JSON ডেটার ফিল্টারিং এবং ট্রান্সফরমেশনে ব্যবহৃত হয়।
- Jackson:
- Jackson হল একটি অত্যন্ত জনপ্রিয় লাইব্রেরি যা JSON ডেটার পঠন (parsing), লেখা (writing), এবং ট্রান্সফরমেশন সুবিধা প্রদান করে। এটি Java ক্লাসে JSON ডেটা ম্যাপিং এবং JSON থেকে Java অবজেক্টে রূপান্তরের জন্য ব্যবহৃত হয়।
- Gson:
- Gson একটি ছোট এবং কার্যকরী লাইব্রেরি, যা Google দ্বারা ডেভেলপ করা হয়েছে। এটি JSON থেকে Java অবজেক্ট এবং Java অবজেক্ট থেকে JSON এ রূপান্তর করতে ব্যবহৃত হয়।
সারাংশ
JSON Data Filtering এবং Transformation Java-তে JSON ডেটার ফিল্টারিং এবং কাঠামো পরিবর্তন করার গুরুত্বপূর্ণ প্রক্রিয়া। Jackson লাইব্রেরি ব্যবহার করে আপনি JSON ডেটা ফিল্টার এবং ট্রান্সফর্ম করতে পারেন। ফিল্টারিংয়ের মাধ্যমে নির্দিষ্ট ফিল্ড বের করা যায় এবং ট্রান্সফরমেশনের মাধ্যমে JSON ডেটার কাঠামো পরিবর্তন করা যায়, যেমন নতুন ফিল্ড যোগ করা বা ফিল্ডের মান পরিবর্তন করা। JSON ফিল্টারিং এবং ট্রান্সফরমেশন প্রক্রিয়া সাধারণত ডেটা এক্সচেঞ্জ, API কল এবং ডাইনামিক কন্টেন্ট ম্যানিপুলেশনের জন্য অত্যন্ত গুরুত্বপূর্ণ।
JSON (JavaScript Object Notation) হল একটি হালকা ডেটা বিনিময় ফরম্যাট, যা বিভিন্ন সিস্টেম এবং অ্যাপ্লিকেশনের মধ্যে ডেটা ট্রান্সফার করতে ব্যবহৃত হয়। Java দিয়ে JSON ডেটার ম্যানিপুলেশন এবং ফিল্টারিং করা যেতে পারে, যেমন: JSON ডেটা থেকে নির্দিষ্ট মান বা বৈশিষ্ট্য বের করা, পরিবর্তন করা, অথবা নতুন ডেটা যুক্ত করা।
এখানে, JSON Data Filtering এবং Manipulation এর কিছু মৌলিক পদ্ধতি আলোচনা করা হবে, যেখানে Jackson এবং Gson লাইব্রেরি ব্যবহার করা হবে।
1. Jackson ব্যবহার করে JSON Data Filtering এবং Manipulation
Jackson হল একটি জনপ্রিয় Java লাইব্রেরি যা JSON ডেটা পার্স, সিরিয়ালাইজেশন, এবং ডেসিরিয়ালাইজেশন এর জন্য ব্যবহৃত হয়। Jackson JSON ডেটার ফিল্টারিং এবং ম্যানিপুলেশন সহজে করার জন্য বিভিন্ন সরঞ্জাম প্রদান করে।
Jackson Dependency
Jackson লাইব্রেরি ব্যবহার করার জন্য Maven এ নিচের ডিপেনডেন্সি যুক্ত করতে হবে:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.1</version>
</dependency>
JSON ফিল্টারিং এবং ম্যানিপুলেশন উদাহরণ (Jackson)
ধরা যাক, আমাদের একটি JSON ডেটা আছে:
{
"name": "John",
"age": 30,
"city": "New York",
"address": {
"street": "123 Main St",
"postalCode": "10001"
}
}
JSON ফিল্টারিং
ফিল্টারিং মানে হল JSON ডেটা থেকে কিছু নির্দিষ্ট বৈশিষ্ট্য বা তথ্য বেছে নেওয়া।
Jackson ব্যবহার করে JSON ডেটা থেকে নির্দিষ্ট ফিল্ড বের করা:
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.io.IOException;
public class JsonFiltering {
public static void main(String[] args) throws IOException {
String json = "{ \"name\": \"John\", \"age\": 30, \"city\": \"New York\", \"address\": { \"street\": \"123 Main St\", \"postalCode\": \"10001\" } }";
// ObjectMapper এর মাধ্যমে JSON পার্স করা
ObjectMapper objectMapper = new ObjectMapper();
ObjectNode objectNode = (ObjectNode) objectMapper.readTree(json);
// JSON থেকে কিছু ফিল্ড ফিল্টার করা (যেমন "age" এবং "address" কে বাদ দেওয়া)
objectNode.remove("age");
objectNode.remove("address");
// ফিল্টার করা JSON দেখানো
System.out.println(objectMapper.writeValueAsString(objectNode));
}
}
এখানে, remove() মেথড ব্যবহার করে age এবং address ফিল্ডগুলো বাদ দেওয়া হয়েছে।
JSON ম্যানিপুলেশন
JSON ডেটাতে নতুন ফিল্ড যোগ করা বা বিদ্যমান ফিল্ড আপডেট করা।
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.io.IOException;
public class JsonManipulation {
public static void main(String[] args) throws IOException {
String json = "{ \"name\": \"John\", \"age\": 30, \"city\": \"New York\" }";
// ObjectMapper এর মাধ্যমে JSON পার্স করা
ObjectMapper objectMapper = new ObjectMapper();
ObjectNode objectNode = (ObjectNode) objectMapper.readTree(json);
// নতুন ফিল্ড যোগ করা
objectNode.put("country", "USA");
// বিদ্যমান ফিল্ড আপডেট করা
objectNode.put("age", 31);
// ম্যানিপুলেট করা JSON দেখানো
System.out.println(objectMapper.writeValueAsString(objectNode));
}
}
এখানে, নতুন ফিল্ড country যোগ করা হয়েছে এবং age ফিল্ডের মান 31 এ আপডেট করা হয়েছে।
2. Gson ব্যবহার করে JSON Data Filtering এবং Manipulation
Gson হল একটি আরেকটি জনপ্রিয় লাইব্রেরি যা Java অবজেক্টকে JSON ফরম্যাটে কনভার্ট এবং JSON ডেটাকে Java অবজেক্টে কনভার্ট করতে ব্যবহৃত হয়।
Gson Dependency
Gson লাইব্রেরি ব্যবহারের জন্য Maven এ নিচের ডিপেনডেন্সি যুক্ত করতে হবে:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.8</version>
</dependency>
JSON ফিল্টারিং এবং ম্যানিপুলেশন উদাহরণ (Gson)
ধরা যাক, আমাদের একই JSON ডেটা আছে:
{
"name": "John",
"age": 30,
"city": "New York",
"address": {
"street": "123 Main St",
"postalCode": "10001"
}
}
JSON ফিল্টারিং (Gson)
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class JsonFilteringGson {
public static void main(String[] args) {
String json = "{ \"name\": \"John\", \"age\": 30, \"city\": \"New York\", \"address\": { \"street\": \"123 Main St\", \"postalCode\": \"10001\" } }";
// JsonObject এর মাধ্যমে JSON পার্স করা
JsonObject jsonObject = JsonParser.parseString(json).getAsJsonObject();
// JSON থেকে কিছু ফিল্ড ফিল্টার করা
jsonObject.remove("age");
jsonObject.remove("address");
// ফিল্টার করা JSON দেখানো
System.out.println(jsonObject.toString());
}
}
এখানে, remove() মেথড ব্যবহার করে age এবং address ফিল্ডগুলো বাদ দেওয়া হয়েছে।
JSON ম্যানিপুলেশন (Gson)
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class JsonManipulationGson {
public static void main(String[] args) {
String json = "{ \"name\": \"John\", \"age\": 30, \"city\": \"New York\" }";
// JsonObject এর মাধ্যমে JSON পার্স করা
JsonObject jsonObject = JsonParser.parseString(json).getAsJsonObject();
// নতুন ফিল্ড যোগ করা
jsonObject.addProperty("country", "USA");
// বিদ্যমান ফিল্ড আপডেট করা
jsonObject.addProperty("age", 31);
// ম্যানিপুলেট করা JSON দেখানো
System.out.println(jsonObject.toString());
}
}
এখানে, নতুন ফিল্ড country যোগ করা হয়েছে এবং age ফিল্ডের মান 31 এ আপডেট করা হয়েছে।
JSON ফিল্টারিং এবং ম্যানিপুলেশনের সুবিধা
- ডেটা প্রক্রিয়াকরণের সুবিধা: JSON ডেটা সহজে ফিল্টার এবং ম্যানিপুলেট করা যায়, যেমন: নির্দিষ্ট ফিল্ড বের করা, ফিল্ড মুছে ফেলা বা নতুন ফিল্ড যোগ করা।
- ডাইনামিক ওয়েব অ্যাপ্লিকেশন: এই টেকনিক ব্যবহার করে ডাইনামিক ওয়েব অ্যাপ্লিকেশন তৈরি করা যায় যেখানে ডেটা দ্রুত পরিবর্তন এবং প্রদর্শন করা সম্ভব।
- প্রতিবেদন এবং ডেটা বিশ্লেষণ: JSON ফিল্টারিং এবং ম্যানিপুলেশন ব্যবহার করে বড় ডেটাসেট থেকে নির্দিষ্ট ডেটা বিশ্লেষণ করা সহজ হয়।
JSON Data Filtering এবং Manipulation Java তে গুরুত্বপূর্ণ কার্যকারিতা প্রদান করে, যেখানে Jackson এবং Gson লাইব্রেরি ব্যবহারের মাধ্যমে JSON ডেটা সহজে প্রক্রিয়া করা যায়।
jq হল একটি শক্তিশালী কমান্ড-লাইন টুল যা JSON ডেটা ফিল্টারিং, ম্যানিপুলেশন এবং প্রসেসিং করার জন্য ব্যবহৃত হয়। এটি JSON ডেটাকে সহজভাবে প্রক্রিয়া করতে এবং প্রয়োজনীয় তথ্য বের করতে সহায়তা করে। এটি JSON ডেটার ভিতর থেকে সুনির্দিষ্ট তথ্য সিলেক্ট করতে এবং পরিবর্তন করতে সাহায্য করে, যা সাধারণত স্ক্রিপ্টিং বা ডেটা প্রক্রিয়া করার সময় প্রয়োজন হয়।
এখানে আমরা jq টুল ব্যবহার করে JSON ফিল্টারিং এবং ম্যানিপুলেশন কিভাবে করা যায়, তার কিছু উদাহরণ দেখাবো।
jq টুল ইনস্টল করা
আপনি যদি jq টুলটি ইনস্টল না করে থাকেন, তাহলে এটি ইনস্টল করতে হবে। নিচে jq টুল ইনস্টল করার পদ্ধতি দেওয়া হলো।
Linux/MacOS
sudo apt-get install jq # Ubuntu/Debian-based systems
brew install jq # MacOS (Homebrew)
Windows
Windows এ jq টুল ইনস্টল করতে, jq official website থেকে Windows ভার্সন ডাউনলোড করে ইনস্টল করতে পারেন।
jq ব্যবহার করে JSON ফিল্টারিং
jq টুল ব্যবহার করে JSON ডেটার মধ্যে নির্দিষ্ট তথ্য বের করা বা ফিল্টার করা খুব সহজ। আমরা বিভিন্ন ধরনের ফিল্টারিং অপারেশন দেখবো।
১. JSON ফাইল থেকে সমস্ত কীগুলি বের করা
ধরা যাক আমাদের একটি JSON ফাইল আছে:
{
"name": "John",
"age": 30,
"city": "New York"
}
এই JSON ডেটা থেকে সমস্ত কীগুলি (key) বের করতে নিম্নলিখিত jq কমান্ডটি ব্যবহার করা হয়:
cat file.json | jq 'keys'
এটা আউটপুট করবে:
[
"name",
"age",
"city"
]
২. নির্দিষ্ট কীগুলি (key) বের করা
যদি আপনি শুধুমাত্র name কীগুলির মান বের করতে চান, তাহলে এটি করতে হবে:
cat file.json | jq '.name'
এটি আউটপুট করবে:
"John"
৩. ফিল্টার ব্যবহার করে নির্দিষ্ট মান (value) বের করা
ধরা যাক আমাদের JSON ফাইলে nested ডেটা রয়েছে, যেমন:
{
"person": {
"name": "John",
"age": 30,
"address": {
"street": "123 Main St",
"city": "New York"
}
}
}
এখন, যদি আমরা person.address.city এর মান বের করতে চাই, তাহলে এই কমান্ডটি ব্যবহার করা হয়:
cat file.json | jq '.person.address.city'
এটি আউটপুট করবে:
"New York"
৪. JSON অ্যারে থেকে নির্দিষ্ট উপাদান বের করা
ধরা যাক, আমাদের JSON ডেটা একটি অ্যারে রয়েছে, যেমন:
[
{"name": "John", "age": 30},
{"name": "Jane", "age": 25},
{"name": "Mark", "age": 35}
]
এখন, যদি আমরা শুধুমাত্র age ফিল্টার করতে চাই, তাহলে এটি করতে হবে:
cat file.json | jq '.[].age'
এটি আউটপুট করবে:
30
25
35
৫. jq ব্যবহার করে JSON ডেটা ম্যানিপুলেশন (পরিবর্তন)
jq টুল ব্যবহার করে আপনি JSON ডেটার মান পরিবর্তন বা ম্যানিপুলেশনও করতে পারেন। উদাহরণস্বরূপ, যদি আপনি JSON এর age মান পরিবর্তন করতে চান, তাহলে এটি করতে হবে:
cat file.json | jq '.person.age = 35'
এটি আউটপুট করবে:
{
"person": {
"name": "John",
"age": 35,
"address": {
"street": "123 Main St",
"city": "New York"
}
}
}
৬. jq দিয়ে JSON ফিল্টারিং এবং চেইন অপারেশন
আপনি jq টুলে একাধিক ফিল্টার চেইন করতে পারেন। যেমন, যদি আপনি age এবং name উভয় তথ্য একসাথে পেতে চান:
cat file.json | jq '.person | {name, age}'
এটি আউটপুট করবে:
{
"name": "John",
"age": 30
}
৭. JSON অ্যারে থেকে কিছু নির্দিষ্ট উপাদান বের করা
ধরা যাক, আপনার JSON অ্যারে থেকে age 30 এর বেশি এমন ব্যক্তিদের নাম বের করতে চান, তাহলে আপনি এইভাবে করতে পারেন:
cat file.json | jq '.[] | select(.age > 30) | .name'
এটি আউটপুট করবে:
"Mark"
jq এর আরও কিছু শক্তিশালী ফিচার
- Filter Expressions: jq ব্যবহার করে আরও জটিল ফিল্টার এক্সপ্রেশন তৈরি করা যায়, যেমন শর্তযুক্ত চয়ন (conditional selection), এবং ধাপানুসারী (hierarchical) ডেটা ফিল্টারিং।
- Aggregation: jq ব্যবহার করে অ্যারে বা ডেটার উপর যোগফল, গড়, সর্বোচ্চ বা সর্বনিম্ন মান বের করা যেতে পারে।
- JSON ম্যানিপুলেশন: jq JSON ডেটা পরিবর্তন, তৈরি, যুক্ত বা মুছে ফেলার কাজ করতে পারে।
jq টুলটি JSON ডেটার ফিল্টারিং এবং ম্যানিপুলেশন করার জন্য অত্যন্ত শক্তিশালী এবং কার্যকরী। এটি কমান্ড-লাইন থেকে JSON ডেটার উপর বিভিন্ন ধরনের কার্যকরী ফিল্টারিং এবং ম্যানিপুলেশন কাজ করতে সাহায্য করে। JSON ডেটা বিশ্লেষণ, টেমপ্লেটিং এবং বড় ডেটাসেটের মধ্যে প্যাটার্ন খোঁজা এটির প্রধান ব্যবহার।
JSON (JavaScript Object Notation) একটি জনপ্রিয় ডেটা এক্সচেঞ্জ ফরম্যাট, যা সাধারণত ওয়েব অ্যাপ্লিকেশনগুলির মধ্যে ডেটা আদান প্রদান করতে ব্যবহৃত হয়। কখনো কখনো আমাদের প্রয়োজন হয় JSON ডেটাকে বিভিন্ন ফরম্যাটে রূপান্তর করার, যেমন XML, CSV, YAML ইত্যাদি। Java তে JSON ডেটাকে বিভিন্ন ফরম্যাটে রূপান্তর করার জন্য কিছু জনপ্রিয় লাইব্রেরি রয়েছে, যেমন Jackson, Gson, এবং org.json।
এখানে, আমরা Jackson লাইব্রেরি ব্যবহার করে JSON ডেটাকে বিভিন্ন ফরম্যাটে রূপান্তরের কিছু উদাহরণ দেখব।
Jackson দিয়ে JSON ডেটাকে বিভিন্ন ফরম্যাটে রূপান্তর করা
Jackson লাইব্রেরি ইনস্টল করা
Jackson লাইব্রেরি Maven এর মাধ্যমে ইনস্টল করা যেতে পারে। আপনাকে jackson-databind এবং jackson-dataformat-xml (XML রূপান্তরের জন্য) লাইব্রেরি যোগ করতে হবে।
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.12.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-csv</artifactId>
<version>2.12.3</version>
</dependency>
1. JSON থেকে XML রূপান্তর
Jackson এর মাধ্যমে JSON ডেটাকে XML ফরম্যাটে রূপান্তর করার জন্য jackson-dataformat-xml লাইব্রেরি ব্যবহার করা হয়।
JSON থেকে XML রূপান্তর উদাহরণ
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.xml.XmlFactory;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
class Person {
public String name;
public int age;
// Constructor, Getters and Setters
}
public class JsonToXmlExample {
public static void main(String[] args) throws Exception {
// Creating a Person object
Person person = new Person();
person.name = "John";
person.age = 30;
// Convert to JSON first
ObjectMapper jsonMapper = new ObjectMapper();
String json = jsonMapper.writeValueAsString(person);
// Convert JSON to XML
XmlMapper xmlMapper = new XmlMapper(new XmlFactory());
String xml = xmlMapper.writeValueAsString(person);
System.out.println("JSON:\n" + json);
System.out.println("XML:\n" + xml);
}
}
আউটপুট:
JSON:
{"name":"John","age":30}
XML:
<?xml version="1.0" encoding="UTF-8"?>
<Person>
<name>John</name>
<age>30</age>
</Person>
2. JSON থেকে CSV রূপান্তর
Jackson লাইব্রেরির jackson-dataformat-csv মডিউল ব্যবহার করে JSON ডেটাকে CSV ফরম্যাটে রূপান্তর করা যায়।
JSON থেকে CSV রূপান্তর উদাহরণ
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.csv.CsvFactory;
import com.fasterxml.jackson.dataformat.csv.CsvMapper;
import com.fasterxml.jackson.dataformat.csv.CsvSchema;
import java.io.File;
import java.io.IOException;
import java.util.List;
class Person {
public String name;
public int age;
// Constructor, Getters and Setters
}
public class JsonToCsvExample {
public static void main(String[] args) throws IOException {
// Creating a Person object
Person person = new Person();
person.name = "John";
person.age = 30;
// Convert to JSON first
ObjectMapper jsonMapper = new ObjectMapper();
List<Person> persons = List.of(person);
// Convert JSON to CSV
CsvMapper csvMapper = new CsvMapper();
CsvSchema schema = csvMapper.schemaFor(Person.class).withHeader();
// Write to CSV file
csvMapper.writerFor(List.class).with(schema).writeValue(new File("output.csv"), persons);
System.out.println("CSV file written successfully.");
}
}
output.csv:
name,age
John,30
3. JSON থেকে YAML রূপান্তর
YAML ফরম্যাটে রূপান্তর করার জন্য jackson-dataformat-yaml লাইব্রেরি ব্যবহার করা হয়।
JSON থেকে YAML রূপান্তর উদাহরণ
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
<version>2.12.3</version>
</dependency>
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import com.fasterxml.jackson.dataformat.yaml.YamlMapper;
class Person {
public String name;
public int age;
// Constructor, Getters and Setters
}
public class JsonToYamlExample {
public static void main(String[] args) throws Exception {
// Creating a Person object
Person person = new Person();
person.name = "John";
person.age = 30;
// Convert to JSON first
ObjectMapper jsonMapper = new ObjectMapper();
String json = jsonMapper.writeValueAsString(person);
// Convert JSON to YAML
YamlMapper yamlMapper = new YamlMapper(new YAMLFactory());
String yaml = yamlMapper.writeValueAsString(person);
System.out.println("JSON:\n" + json);
System.out.println("YAML:\n" + yaml);
}
}
আউটপুট (YAML):
JSON:
{"name":"John","age":30}
YAML:
name: John
age: 30
4. JSON থেকে Plain Text রূপান্তর
JSON ডেটা একটি সহজ স্ট্রিং ফরম্যাটেও রূপান্তর করা যেতে পারে, যেখানে JSON অবজেক্টের ভিতরের মান সরাসরি পাঠ্য হিসাবে বের করা হয়।
JSON থেকে Plain Text রূপান্তর উদাহরণ
import com.fasterxml.jackson.databind.ObjectMapper;
class Person {
public String name;
public int age;
// Constructor, Getters and Setters
}
public class JsonToPlainTextExample {
public static void main(String[] args) throws Exception {
// Creating a Person object
Person person = new Person();
person.name = "John";
person.age = 30;
// Convert to JSON first
ObjectMapper jsonMapper = new ObjectMapper();
String json = jsonMapper.writeValueAsString(person);
// Convert JSON to Plain Text (Extract fields manually)
String plainText = "Name: " + person.name + "\nAge: " + person.age;
System.out.println("Plain Text:\n" + plainText);
}
}
আউটপুট (Plain Text):
Plain Text:
Name: John
Age: 30
সারাংশ
Jackson লাইব্রেরি ব্যবহার করে JSON ডেটাকে বিভিন্ন ফরম্যাটে রূপান্তর করা যায়, যেমন XML, CSV, YAML এবং সাধারণ Plain Text। Jackson এর বিভিন্ন dataformat modules যেমন jackson-dataformat-xml, jackson-dataformat-csv, এবং jackson-dataformat-yaml JSON ডেটাকে বিভিন্ন ফরম্যাটে কনভার্ট করার জন্য ব্যবহার করা যায়। এই লাইব্রেরি ব্যবহার করে আপনি JSON ডেটা সহজেই XML, CSV, YAML বা অন্যান্য ফরম্যাটে রূপান্তর করতে পারেন, যা ডেটা এক্সচেঞ্জ এবং স্টোরেজের জন্য উপযোগী।
JSON (JavaScript Object Notation) হল একটি সাধারণ এবং মানব-পঠনযোগ্য ডেটা ফরম্যাট যা ওয়েব অ্যাপ্লিকেশনগুলোতে ডেটা এক্সচেঞ্জের জন্য ব্যবহৃত হয়। Java অ্যাপ্লিকেশনেও JSON ডেটাকে প্রক্রিয়াজাত এবং রূপান্তর (transformation) করা হয়। এখানে আমরা একটি Practical উদাহরণ দেখব যেখানে JSON ডেটা এক্সট্রাক্ট (extract) এবং ট্রান্সফর্ম (transform) করা হবে।
এই উদাহরণে Jackson লাইব্রেরি ব্যবহার করা হবে, যা JSON ডেটাকে Java অবজেক্টে এবং Java অবজেক্টকে JSON ফরম্যাটে রূপান্তর করতে সাহায্য করে।
১. JSON Data Extraction (JSON থেকে ডেটা এক্সট্রাকশন)
ধরা যাক আমাদের কাছে একটি JSON ডেটা আছে এবং আমাদের সেই ডেটা থেকে কিছু নির্দিষ্ট তথ্য (যেমন, নাম এবং বয়স) এক্সট্রাক্ট করতে হবে।
JSON ডেটা উদাহরণ (data.json)
{
"employees": [
{
"name": "John",
"age": 30,
"department": "HR"
},
{
"name": "Jane",
"age": 25,
"department": "Finance"
},
{
"name": "Tom",
"age": 35,
"department": "IT"
}
]
}
এই JSON ডেটাতে employees নামক একটি অ্যারে রয়েছে, যা বিভিন্ন কর্মচারীর নাম, বয়স এবং বিভাগের তথ্য ধারণ করছে।
Java ক্লাস তৈরি (POJO)
প্রথমে আমাদের Java ক্লাস তৈরি করতে হবে, যাতে JSON ডেটাকে Java অবজেক্টে রূপান্তর করা যায়।
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.io.IOException;
import java.util.List;
class Employee {
private String name;
private int age;
private String department;
// Getters and Setters
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
public String getDepartment() { return department; }
public void setDepartment(String department) { this.department = department; }
}
class Employees {
private List<Employee> employees;
public List<Employee> getEmployees() {
return employees;
}
public void setEmployees(List<Employee> employees) {
this.employees = employees;
}
}
এখানে, Employee ক্লাসে কর্মচারীর নাম, বয়স এবং বিভাগের জন্য প্রপার্টি রয়েছে, এবং Employees ক্লাসে কর্মচারীদের একটি List রয়েছে।
JSON এক্সট্রাকশন (Java থেকে JSON ডেটা এক্সট্রাক্ট করা)
এখন JSON ফাইলটি পার্স (parse) করে Java অবজেক্টে রূপান্তর করা হবে এবং তারপর সেই অবজেক্ট থেকে নাম এবং বয়স এক্সট্রাক্ট করা হবে।
public class JsonDataExtraction {
public static void main(String[] args) throws IOException {
// Create an ObjectMapper instance
ObjectMapper objectMapper = new ObjectMapper();
// Read the JSON file and convert it into the Employees object
Employees employees = objectMapper.readValue(new File("data.json"), Employees.class);
// Loop through the employee list and extract name and age
for (Employee employee : employees.getEmployees()) {
System.out.println("Name: " + employee.getName() + ", Age: " + employee.getAge());
}
}
}
Output:
Name: John, Age: 30
Name: Jane, Age: 25
Name: Tom, Age: 35
এখানে ObjectMapper ব্যবহার করে JSON ডেটাকে Employees অবজেক্টে রূপান্তর করা হচ্ছে এবং তারপর লুপের মাধ্যমে প্রতিটি কর্মচারীর নাম এবং বয়স এক্সট্রাক্ট করা হচ্ছে।
২. JSON Data Transformation (JSON ডেটা ট্রান্সফরমেশন)
এখন আমরা JSON ডেটা ট্রান্সফর্ম (transform) করার উদাহরণ দেখব। মানে, JSON ডেটা থেকে কিছু মান পরিবর্তন করে বা নতুন ডেটা তৈরি করে সেটি JSON ফরম্যাটে রূপান্তর করা।
Transformation - উদাহরণ
ধরা যাক, আমাদের একটি অ্যারে আছে কর্মচারীদের নাম এবং বয়সের সাথে, এবং আমরা তাদের বয়সের উপর ভিত্তি করে একটি নতুন JSON তৈরি করতে চাই যা নাম এবং বয়সের সাথে একটি নতুন status প্রপার্টি যোগ করবে (যেমন, "Adult" বা "Minor")।
public class JsonDataTransformation {
public static void main(String[] args) throws IOException {
// Sample JSON data
String jsonData = "[{\"name\":\"John\", \"age\":30}, {\"name\":\"Jane\", \"age\":25}, {\"name\":\"Tom\", \"age\":35}]";
// Create an ObjectMapper instance
ObjectMapper objectMapper = new ObjectMapper();
// Parse the JSON string into an array of Employee objects
List<Employee> employeeList = objectMapper.readValue(jsonData, objectMapper.getTypeFactory().constructCollectionType(List.class, Employee.class));
// Transform the data by adding a new 'status' field based on age
for (Employee employee : employeeList) {
String status = (employee.getAge() >= 18) ? "Adult" : "Minor";
System.out.println("Name: " + employee.getName() + ", Age: " + employee.getAge() + ", Status: " + status);
}
}
}
Output:
Name: John, Age: 30, Status: Adult
Name: Jane, Age: 25, Status: Adult
Name: Tom, Age: 35, Status: Adult
এখানে:
- JSON ডেটা স্ট্রিং থেকে
Employeeঅবজেক্টের একটি লিস্ট তৈরি করা হচ্ছে। - তারপর, প্রতিটি কর্মচারীর বয়সের উপর ভিত্তি করে একটি নতুন
statusপ্রপার্টি যোগ করা হচ্ছে।
JSON ট্রান্সফর্মেশন: নতুন JSON তৈরি করা
এখন আমরা সেই ট্রান্সফর্মড ডেটা আবার JSON ফরম্যাটে রূপান্তর (serialization) করব এবং আউটপুট দেখাব।
public class JsonDataTransformation {
public static void main(String[] args) throws IOException {
// Sample JSON data
String jsonData = "[{\"name\":\"John\", \"age\":30}, {\"name\":\"Jane\", \"age\":25}, {\"name\":\"Tom\", \"age\":35}]";
// Create an ObjectMapper instance
ObjectMapper objectMapper = new ObjectMapper();
// Parse the JSON string into an array of Employee objects
List<Employee> employeeList = objectMapper.readValue(jsonData, objectMapper.getTypeFactory().constructCollectionType(List.class, Employee.class));
// Transform the data by adding a new 'status' field based on age
for (Employee employee : employeeList) {
String status = (employee.getAge() >= 18) ? "Adult" : "Minor";
employee.setDepartment(status); // Here, using department field for status
}
// Serialize the transformed data back to JSON
String transformedJson = objectMapper.writeValueAsString(employeeList);
System.out.println(transformedJson);
}
}
Output:
[
{"name":"John","age":30,"department":"Adult"},
{"name":"Jane","age":25,"department":"Adult"},
{"name":"Tom","age":35,"department":"Adult"}
]
এখানে আমরা department ফিল্ডটি নতুন status হিসেবে ব্যবহার করেছি এবং শেষ পর্যন্ত সেই ট্রান্সফর্মড ডেটাকে আবার JSON ফরম্যাটে রূপান্তর করেছি।
সারাংশ
JSON ডেটার extraction এবং transformation খুবই গুরুত্বপূর্ণ এবং শক্তিশালী কৌশল যা Java অ্যাপ্লিকেশনে বিভিন্ন ধরনের ডেটা প্রসেসিংয়ের জন্য ব্যবহৃত হয়। Jackson লাইব্রেরি ব্যবহার করে JSON ডেটা সহজেই Java অবজেক্টে রূপান্তর করা যায় এবং Java অবজেক্ট থেকে JSON তৈরি করা যায়। JSON থেকে ডেটা এক্সট্রাক্ট (extract) করার জন্য POJO (Plain Old Java Object) ব্যবহার করা হয় এবং transformation প্রক্রিয়ায় ডেটাতে নতুন ফিল্ড বা মান যোগ করা হয়।
Read more